package com.ruoyi.cs.mapper;

import com.ruoyi.cs.domain.TBattleInfo;
import com.ruoyi.cs.domain.dto.battle.BattleBaseResp;
import com.ruoyi.cs.domain.vo.TBattleBackVo;
import com.ruoyi.cs.domain.vo.TBattleBoxCountVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.core.parameters.P;

import java.beans.IntrospectionException;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * 盲盒对战信息Mapper接口
 * 
 * @author ruoyi
 * @date 2021-08-05
 */
public interface TBattleInfoMapper 
{
    /**
     * 查询盲盒对战信息
     * 
     * @param battleId 盲盒对战信息ID
     * @return 盲盒对战信息
     */
    public TBattleInfo selectTBattleInfoById(String battleId);

    /**
     * 查询盲盒对战信息列表
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 盲盒对战信息集合
     */
    public List<TBattleInfo> selectTBattleInfoList(TBattleInfo tBattleInfo);

    /**
     * 新增盲盒对战信息
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 结果
     */
    public int insertTBattleInfo(TBattleInfo tBattleInfo);

    /**
     * 修改盲盒对战信息
     * 
     * @param tBattleInfo 盲盒对战信息
     * @return 结果
     */
    public int updateTBattleInfo(TBattleInfo tBattleInfo);

    /**
     * 删除盲盒对战信息
     * 
     * @param battleId 盲盒对战信息ID
     * @return 结果
     */
    public int deleteTBattleInfoById(String battleId);

    /**
     * 批量删除盲盒对战信息
     * 
     * @param battleIds 需要删除的数据ID
     * @return 结果
     */
    public int deleteTBattleInfoByIds(String[] battleIds);

    /**
     * 获取所有的对战列表
     * @return
     */
    public List<TBattleInfo> battleList(@Param("userId") String userId);

    public List<BattleBaseResp> battleList1(@Param("userId") String userId, @Param("startTime")  String startTime);

    public List<TBattleInfo> historyBattleList(@Param("userId") String userId);

    public List<TBattleInfo> historyBattleList1(@Param("userId") String userId);

    /**
     * 后台盲盒对战列表
     * @param tBattleBackVo
     * @return
     */
    public List<TBattleInfo> battleBackList(TBattleBackVo tBattleBackVo);

    public Map countToday();

    public Map countTotal(@Param("startTime") String startTime, @Param("endTime") String endTime);

    public List<Map> boxCountList(TBattleBoxCountVo tBattleBoxCountVo);

    public List<TBattleInfo> obsoleteBattleList(int hour);

    public int updateStatusById(String battleId);

    public List<TBattleInfo> selectAminuteAgo();

    public int updateBattleInfoStatus(List<String> list);


    /**
     * 查询AI对战房间
     * @param costRangeType
     * @param minuteNum
     * @return
     */
    public List<TBattleInfo> selectAIBattleInfo(@Param("costRangeType") String costRangeType, @Param("minuteNum") Integer minuteNum);


    /**
     * @Desc: 统计主播创建粉丝对战的总额度
     * @author: zz
     * @date: 2024/2/23
     */
    public BigDecimal countFansBattleTotalFee(String userId);

    /**
     * @Desc: 统计主播每日创建对战次数
     * @author: zz
     * @date: 2024/2/23
     */
    public Long countFansBattleNumber(String userId);
}
